package com.library_management.jdbc;

import java.sql.*;
import java.util.Properties;

public class JdbcUtil {
    // 数据库连接参数（声明为final，确保初始化后不可修改）
    private static final String URL;
    private static final String USER;
    private static final String PASSWORD;

    // 静态代码块加载配置
    static {
        try {
            Properties prop = new Properties();
            // 读取resources目录下的db.properties配置文件
            prop.load(JdbcUtil.class.getClassLoader().getResourceAsStream("db.properties"));

            // 从配置文件获取参数，若不存在则使用默认值
            URL = prop.getProperty("url", "jdbc:mysql://localhost:3306/library_db?useSSL=false&serverTimezone=UTC");
            USER = prop.getProperty("user", "root");
            PASSWORD = prop.getProperty("password", ""); // 替换为你的数据库密码

            // 加载MySQL驱动（MySQL 8.0+ 必须使用com.mysql.cj.jdbc.Driver）
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (Exception e) {
            throw new RuntimeException("初始化JdbcUtil失败，请检查配置", e);
        }
    }

    // 获取数据库连接
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASSWORD);
    }

    // 关闭资源（支持ResultSet为null的情况）
    public static void close(ResultSet rs, PreparedStatement pstmt, Connection conn) {
        try {
            if (rs != null) rs.close();
            if (pstmt != null) pstmt.close();
            if (conn != null) conn.close(); // 归还连接到连接池
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}